package com.haonan.springboot_exercise.service;

import com.haonan.springboot_exercise.bean.pojo.MyMailMessage;
import com.haonan.springboot_exercise.bean.pojo.Result;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;

/**
 * @author haonan
 * @date 2021/4/15 21:22
 **/
@Service
public interface SmtpServerService {
    /**
     * 判断客户端发的domain对不对，返回状态码的String形式
     * 250,HELOReady
     * 350,HELOWrong
     * @param payload domain 如 996.com
     * @return JSON.toJSONString(MsgResult msgResult)
     */
    String getHELOResult(String payload);

    /**
     * 判断客户端发的”发件人“对不对，返回状态码的String形式
     * 251,MAILReady
     * 351,MAILWrong
     * @param payload 发件人用户名
     * @return JSON.toJSONString(MsgResult msgResult)
     */
    String getMAILResult(String payload);

    /**
     * 判断”收件人对不对“，如果payload里面有不存在的用户，就把这个”假用户名“发回去
     * 252,RCPTReady
     * 352,xxx@xx,xxx@xx,xxx@xx
     * @param payload 收件人用户名集合
     * @return “不存在的用户”的用户名
     */
    String getRCPTResult(String payload);

    /**
     * 主题
     * 253,SUBJReady
     * 353,SUBJWrong
     * @param payload  主题
     * @return JSON.toJSONString(MsgResult msgResult)
     */
    String getSUBJResult(String payload);

    /**
     * 254,TIMEReady
     * 354,TIMEWrong
     * @param payload 时间
     * @return JSON.toJSONString(MsgResult msgResult)
     */
    String getTIMEResult(String payload);

    /**
     * 300,OK
     * 400,Failed
     * @param payload 正文
     * @return JSON.toJSONString(MsgResult msgResult)
     */
    String getTEXTResult(String payload);

    /**
     * 存储邮件
     * @param myMailMessage 邮件，其中to为String[]
     * @return 布尔
     */
    Boolean storeMails(MyMailMessage myMailMessage);

    /**
     * 关闭Smtp服务
     * @return
     * @throws Exception
     */
    Result closeSmtpServer() throws Exception;

    /**
     * 打开Smtp服务
     * @return
     * @throws Exception
     */
    Result openSmtpServer() throws Exception;
}
